info ft
Cristian Gerardo Jaramillo Cruz
Frandel Corporan Rodríguez
¿Qué son las clases abstractas y por qué son esenciales?
Las clases abstractas en Java son un concepto vital para desarrollar software robusto y fácil de mantener. A pesar de que el término "clases avanzadas" no existe oficialmente, las clases abstractas brindan una extensión poderosa a las capacidades de programación que conocemos, permitiéndonos crear aplicaciones extensibles y modulares a largo plazo.
Las clases abstractas son especialmente útiles para:
¿Cómo las clases abstractas mejoran el polimorfismo?
Polimorfismo es un concepto clave en la programación orientada a objetos que nos permite que un objeto tome muchas formas. Anteriormente, se estudió el polimorfismo en la herencia y las interfaces. Sin embargo, hay casos donde no todos los métodos son necesarios para ser implementados o la herencia directa no es conveniente.
Las clases abstractas permiten:
abstract.public abstract class Figura { abstract void dibujate(); }
¿Cómo estructurar métodos obligatorios y opcionales?
La clave del éxito al usar clases abstractas es decidir qué métodos deben ser obligatorios para las subclases. Un método marcado como abstract en una clase abstracta no tendrá implementación y forzará a las subclases a proporcionar su versión del método.
En ejemplo práctico:
public abstract class Figura { abstract void dibujate(); } public class Triangulo extends Figura { @Override void dibujate() { // Implementación del método dibujate para Triangulo } }
Aquí, la clase Triangulo extiende a la clase abstracta Figura y se ve obligada a implementar el método dibujate.
¿Cuáles son las diferencias clave entre clases abstractas e interfaces?
Aunque tanto las clases abstractas como las interfaces permiten el polimorfismo, tienen sus propias particularidades:
¿Cómo implementar clases abstractas en proyectos reales?
Dado el potencial robusto de las clases abstractas, es crucial saber implementarlas en tus proyectos. Al planificar un proyecto, identifica las clases que pueden ser plantillas y encapsulan métodos abstractos frecuentes que deben ser personalizados.
Por ejemplo, en un proyecto de gestión de medios, como Amazon Viewer, podrías tener una clase abstracta Media que define métodos como play() o stop(), y subclases concretas como Movie o Chapter que personalizan estos comportamientos específicos.
Recuerda que el uso adecuado de clases abstractas te permitirá una administración del código más clara, reduciendo el riesgo de errores, aumentando la extensibilidad y simplificando las futuras expansiones del sistema.
¡Continúa explorando y experimentando para dominar el arte de las clases abstractas en tus proyectos de Java! Tu habilidad para estructurar el código de manera efectiva marcará una gran diferencia en la calidad de tus aplicaciones.
info ft
Cristian Gerardo Jaramillo Cruz
Frandel Corporan Rodríguez
Juan Manuel Alberto Martin
Ann Code
ProfesorJuan Manuel Alberto Martin
Hinder Adrian Alvarez Perlaza
Carlos Reyes
jorge espinoza
Marcos Emilio Velásquez Hidalgo
Francisco Ruiz Lezcano
Reinaldo Mendoza
Frandel Corporan Rodríguez
JUAN SEBASTIAN RODRIGUEZ JIMENEZ
Diego Hermoso
Jenny Karen Guzmán Pulido
Augusto Jesus Muñoz Liñan
Javier Martinez
Fabián Ignacio Toro Riquelme
Fabián Ignacio Toro Riquelme
Enrique Germán Pérez
Ernesto Juárez
Usuario anónimo
UserDavid Jordan
Jean Michael Lozano Cardoso
Jose Ramos
Noe de Jesus Muñoz Martinez
Paul Cortes
JuanFe Peralta
Team PlatziJose Luis Campos Bautista
Wilson Alejandro Gonzalez Gaitan
Jery Rafael Ramírez Teo
Yossijaki Jorge Astilleros Chávez
Felipe de Jesús Galindo Aguilar
Este curso deben de renovarlo porque continua con el curso viejo de Java SE 2018 y no con el nuevo que sacaron de introducción a Java y Java orientado a objetos. Eso de Amazon viewer no es para nada práctico ya deben usar el IntelliJ Idea
Master aun se usa mucho java 8, a pesar de que existan nuevas versiones de JVM realmente ayudan más estos cursos viejos para tener el contexto de que se agrego en cada nueva version de JVM
Ya ni siquiera se una tanto como antes IntelliJ ahora con vscode haces todo sin problemas
Buenas 😄
Tengo una duda en el ultimo ejemplo en el que triangulo hereda de figura. Al tener un método abstracto, la clase no debería ser abstracta también?
Y si la respuesta fuera que “no”, que pasaría cuando se instancia la clase triangulo y se llame a ese método?
Muchas gracias por sus respuestas. Sigo a full con el curso! Saludos 😃
Holis!! efectivamente cuando tenemos un método abstracto es obligatorio que la clase sea abstracta.
Cuando se aplica la herencia entre una clase abstracta padre a una clase hija es obligatorio sobreescribir los métodos abstractos, si desearas que se sigan conservando abstractos en la clase hija, entonces esa clase hija deberá ser abstracta también.
En resúmen siempre que hay un método abstracto sin implementación la clase que lo posee debe ser abstracta también.
Nota. Sí nos falto poner abstract en la diapositiva en la clase Triángulo por que el método no está siendo implementado. 😃
Muchas gracias por tu respuesta 😃
Como que mejor comienzo por el curso de Java Orientado a Objetos jaja
UN PEQUEÑO REPASO DE ALGUNAS COSAS DEL CURSO ANTERIOR PARA REFRESCAR LA MEMORIA:
toString: Información completa de un objeto, es decir, el valor de sus atributos
HERENCIA: Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar. Al heredar de una clase base heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.
POLIMORFISMO: Se da en los métodos sobrescritos, muchas formas de definir un método.
MÉTODO CONSTRUCTOR: Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes, imaginemos un objeto de la clase Persona cuyo atributo color de pelo al nacer sea verde, un estado incorrecto tras construir el objeto persona. La solución en los lenguajes orientados a objetos es emplear los constructores. Un constructor es un método perteneciente a la clase que posee unas características especiales:
INTERFACES: Empleadas para definir un comportamiento que posteriormente será implementado por distintas clases, que podrían no tener que ver entre sí, pero todas se comportan como los métodos declarados en la interfaz.
HACE FALTA MUCHO MÁS DEL CURSO ANTERIOR, PERO, ES SÓLO PARA ENTENDER BIEN EL CONCEPTO DE CLASES ABSTRACTAS
.
aqui el enlace de AMAZON VIEWeR
Por alguna razón al clonarlo me trajo el Hola Mundo
ACLARACIÓN! Tienen que cambiar de rama correspondiente a la clase. Saludos
Me parece muy raro que tanto tiempo despues no se han actualizado los cursos
2024, aun no
Clases Abstractas
En Java se dice que son clases abstractas aquellas clases base (superclases) de las que no se permite la creación de objetos. Para ello, se utiliza la palabra clave abstract.
Métodos Abstractos
En una clase abstracta es posible definir métodos abstractos, los cuales se caracterizan por el hecho de que no pueden ser implementados en la clase base. De ellos, solo se escribe su signatura en la superclase, y su funcionalidad –polimórfica– tiene que indicarse en las clases derivadas (subclases).
Clases abstractas::
Es una clase que no se puede instanciar y se usa unicamente para definir subclases.
¿Cuando es una clase abstracta?
Es cuando uno de sus métodos no tiene implementación.
¿Cuando se utilizan clases abstractas?
Cuando deseamos definir una abstracción que englobe objetos de distinto tipos y queramos hacer uso del polimorfismo.
Más información
Buen aporte
Bien !
En java tenemos:
polimorfismo estático: Sobrecarga de metodos.
polimorfismo dinámico: Sobreescritura de metodos.
A Alguien más le dio errores al momento de implementar el proyecto anterior? Por que yo no he logrado hacer andar el import com.anncode.makereport.Report; por que me dice que no se puede resolver y cuando uso el mio, lo toma como diferente al que uso la Profesora... alguien más lo resolvio?
Patrañas, ya me di cuenta jajajaja
Tengo el mismo problema y no me di cuenta aun de porque, me podrias ayudar? Desde ya Muchas Gracias!!
No puedo abrir AmazonViewer alguien me puede ayudar?
veamos si se puede avanzar sin ver el curso del 2018 :)
Cómo te fue? jaja
Si ya viste el curso de POO y Java POO, puedes ver este curso, el curso del 2018 tomaba lo que vemos hoy en los dos cursos de POO
Wuao 🤯... Por ahí viene mucho que aprender 💪🏽
Ejemplo clase abstracta:
Excelente clase muy buena definición de lo que es y hace una clase abstracta
Podrías complementar tu aprendizaje con este post: https://platzi.com/blog/clases-abstractas/. :)
Con las clases abstractas no es necesario implementar todos los métodos dichas clases no se pueden instanciar.
Las clases abstractas es como organizar el código de los mas global a lo mas especifico, en este caso un ejemplo seria
la clase figura en el cual puede contener triángulos, círculos,
Las clases especificas seria triángulos o circulo
Clases Abstractas: Nos permite hacer nuestros programas muchos mas mantenibles y mas robustos de forma que podamos implementar nuevos módulos dentro del software en el futuro de una forma muy sencilla
Polimorfismo
*Herencia: Polimorfismo a nivel de herencia se daba en los++ MÉTODOS SOBREESCRITOS++ y ademas que significa MUCHAS FORMAS cuando sobrescribimos métodos en herencia decimos que ese objeto puede comportarse de una forma distinta.(las clases podrían no necesitar heredar la implementación de un método y a veces no necesitamos crear instancias de una clase padre).
*Interfaces: Polimorfismo implementado en interfaces, similar a herencia, pero la diferencia era que en interfaces si podemos implementar absolutamente todos los métodos, métodos sobrescritos y muchas formas.(a veces no necesitamos implementar todos los métodos).
Clase Abstracta: Es una fusión entre las cosas que le faltan a la interfaz por implementar y las cosas que le faltan a la herencia por cubrir.
Clase Abstracta:
Nunca habia utilizado esa clase de polimorfismo!
Hola que tal!
En el ejemplo de Triangulo extends Figura como esa clase no implementa el método abstracto de la clase padre automáticamente esta clase se convierte en abstracta. Por que para que una clase sea abstracta por lo menos un método tiene que ser abstracto. ¿Es esto correcto?