Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Curso Avanzado de Java SE

Curso Avanzado de Java SE

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Implementando clases abstractas al proyecto

3/40

Aportes 47

Preguntas 11

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Leyendo los comentarios me di cuenta que muchos tienen problema con seguir el curso usando Intellij IDEA. Les dejo mi repositorio allí se encuentra el código base para iniciar este curso usando este IDE.

https://github.com/IngJuanMaSuarez/AmazonViewer

Solo descargan o clonan el repositorio, abren Intellij IDEA, seleccionan la opción de “Open”, buscan la carpeta descargada y descomprimida y listo.

Donde está la clase Report???
No existe ni el paquete en ela rama que desdcriben en el enlace al proyecto en Github…

Les comparto un ejemplo:

public class MyClass {
    public static void main(String args[]) {
    
        //INSTANCIAS DE LAS CLASES
        Pikachu pikachu = new Pikachu("Pikachu");
        Charmander charmander = new Charmander("Charmander");
        
        pikachu.ataqueEspecial();
        charmander.ataqueEspecial();
        
    }
}

//CLASE ABSTRACTA POKEMON (PRIMER NIVEL)
abstract class Pokemon {
    public abstract void ataqueEspecial();
}

//CLASES ABSTRACTAS QUE HEREDAN DE POKEMON (SEGUNDO NIVEL)
abstract class Electrico extends Pokemon {
    public abstract void ataqueEspecial();
}

abstract class Fuego extends Pokemon {
    public abstract void ataqueEspecial();
}

//CLASES QUE HEREDAN DE ELECTRICO Y FUEGO (TERCER NIVEL)
class Pikachu extends Electrico {
    
    private String name;
    
    public Pikachu(String name) {
        this.name = name;
    }
    
    public void ataqueEspecial() {
        System.out.println(name + " usa Impact Trueno!!");
    }
}

class Charmander extends Fuego {
    
    private String name;
    
    public Charmander(String name) {
        this.name = name;
    }
    
    public void ataqueEspecial() {
        System.out.println(name + " usa Lanzallamas!!");
    }
}```

Hay muchas forma de abrir el proyecto, yo lo abrí con NetBeans IDE 8.2, Cree un proyecto java, y luego copie toda la carpeta y sub carpeta que se encuentra de src e importe el .jar que se necesitaba el cual mkfile.jar.

Hola, para los que quiere iniciar este curso y vienen del básico del JAVA SE utilizando Intellij y tienen problemas con la carpeta makefile.jar, lo que deben hacer es lo siguiente:

  1. descargar el proyecto de git o de la clase.
  2. abrirlo desde intellij
  3. click derecho en proyecto
    4 click en module project setting
    5 Modules - dependencies
  4. chulear la carpeta .jar
  5. darle click y cambiar el path de la carpeta por la dirección de la que tienen en su pc
  6. aplicar y ya está

¿Por qué hay diferencias entre el código final del Curso Básico de Java SE y el del comienzo del Curso Avanzado?
¿Cómo es que, por ejemplo, cambió la forma de leer la respuesta del usuario en el menu?
En el final del Curso Básico había quedado así:

			// Leer Respuesta usuario
			Scanner sc = new Scanner(System.in);
			int response = Integer.valueOf(sc.nextLine());
			
			if(response == 0) {
				showMenu();
			}

En el inicio del Curso Avanzado aparece asi:

			// Leer Respuesta usuario
			int response = AmazonUtil.validateUserResponseMenu(0, movies.size());
						
			if(response == 0) {
				showMenu();
				break;
			}

Resulta confuso. 😦

PROYECTO ANTERIOR EN IDE INTELLIJ IDEA
https://github.com/wpbreak/AmazonViewer.git

Creo que la mayor utilidad que se le puede dar a una clase abstracta es emplear los métodos declarados como abstractos dentro de los definidos, de esa forma se pueden realizar procesos que involucren dichos métodos abstractos sin importar que sean diferentes para cada hijo.

public abstract class RealizarOperacion {
	private int resultado;
	private int constante1;
	private int constante2;
	
	public abstract int operacion(int a, int b);

	public RealizarOperacion(int constante1, int constante2) {
		this.constante1 = constante1;
		this.constante2 = constante2;
	}

	public void mostrarResultado() {
		resultado = operacion( constante1, constante2);
		System.out.println(resultado);
	}

	publid int getResultado() {
		if ( resultado == null ) {
			resultado = operacion( constante1, constante2);
		}
		return resultado;
	}
}

public class Suma extends RealizarOperacion {
	public Suma (int constante1, int constante2){
		super(constante1, constante2);
	}

	@Override
	public int operacion(int a, int b) {
		return a + b;
	}
}

public class Resta extends RealizarOperacion {
	public Resta (int constante1, int constante2){
		super(constante1, constante2);
	}

	@Override
	public int operacion(int a, int b) {
		return a - b;
	}
}

Luego, en el main o donde lo quieras usar podrías hacer algo así:

Suma cincoYcinco = new Suma(5,5);
cincoYcinco.mostrarResultado();

Resta seisYseis = new Resta(6,6);
int respuestaResta = seisYseis.getResultado();
System.out.println(respuestaResta);

El ejemplo es muy básico y poco útil, pero espero haber logrado dar a entender la gran ventaja e importancia de estas clases abstractas.

Bueno iré aprendiendo, pero me gusta mucho cómo Anahí explica.

Las clases abstractas solucionan las limitaciones de la herencia y las interfaces.

Excelente Clase, muy claro con las clases abstractas

pude importar el proyecto para intellij idea, si alguien necesita ayuda con eso mandeme msj.

Hola buenas noches tengo un problema cuando descargo el archivo de GitHub no se puede abrir en NetBeans 11.3 any idea?

Habrá algún problema si descargo el código de Anncode (que fue hecho en eclipse) y yo trabajé con Netbeans?

Los recursos de la clase estan puestos en Binario y no en texto plano.

En mi forma de ver la utilidad de las clases abstractas son esos métodos sin implementacion,{cuerpo de declaracion} que no podría heredar de las interfaces, y que si quería hacer uso , tenia que inyectar mi interfaz y sobrescribir el método. Ahora, si mi Super clase hereda de la clase abstracta, esos metodos los puedo llamar tanto en mi Super clase como las demás Sub clases.

  • Utilidades:

  1. Refactorizar mi programa a nivel de código(métodos)
  2. Refactorizar mi programa a nivel de (clases) No necesito implementar una hoja de interfaz
  • Desventajas:

  1. Obligatorio tienes que implementar tus métodos abstractos en tu árbol de herencia
  2. No puedo hacer multiple herencia como en las interfaces

Cree un repositorio del código inicial de este curso:

https://github.com/JordyAI/java_avanzado_platzi/

Recuerden cambiar a rama Master, es la versión inicial.

Para los que tienen problemas pasandolo a IntelliJ, simplemente creen un nuevo proyecto java se pasan las clases de la carpeta src y File/Project Structure / Modules /Dependencies/ adjuntan el JAR donde lo tengan, arreglan los imports del main y listo!

Quisiera que actualizaran los cursos con java 11 e ir pensando en java 17

Como conectar tu github a intellij
https://programmerclick.com/article/23652067371/

intente por git pero medio muchos errores me fue mas facil desgar el zip y abrirlo importandolo

Interesante las Clases Abstractas.!!

excelente explicación!!!

Ahora entiendo por que no hacerlo en la de IVisualizable!

Qué buena explicación.
Gracias Anahí

Chicos estoy haciendo el curso con el IDE net beans, al importar el proyecto me sale " no netbeans project added " Alguien sabe como importarlo correctamente a net beans?

muy buena explicacionn

Muy buena explicación.

Tengo una duda… Porque no define el metodo view() en la clase padre y luego las sobreescribe en las clases hijas, porque hay la necesidad de ponerlas abstractas?

El curso básico no esta disponible como se hace si pague por el curso y no lo puedo ver ?

Genial 💪🏽

Hola no encuentro el curso anterior donde se hizo el proyecto de amazon view alguien me podria pasar el link asi hago primero ese curso. Desde ya muchas gracias!

he aprendido muchas cosas

wow aprendiendo demaciado 😃

hasta aquí es que yo entiendo java.

Esa estructura de paquetes no se ve en el curso Básico de Java, parece no haber correlatividad entre ambos cursos alguien podría aclararme un poco por favor?

Excelente clase la explicación muy buena

Exelente clase

Super 😃 gracias

Genial.

Estupendo, comenzamos a utilizar clases abstractas para hacer el código del proyecto más eficiente.

Que mal que hay que haber visto el curso Basico antes de comenzar este ya que tal curso ya no pertenece a la ruta de aprendizaje de Desarrollo con Java, es muy confuso para mi de esa manera.

hola comparto el repo del proyecto original del anterior curso.here

Tengan presente que tienen una version de JDK válida para este proyecto. Si no es el caso, en eclipse abren el proyecto al abrir la carpeta:
File -> Open from file system -> open AmazonViewer

Dan clic derecho en la carpeta y van a propiedades

cick en Java build path, libraries. borran la libreria presente y añaden la que tienen en su equipo

No comprendo en el curso básico no estábamos usando eclipse sino InteliJIdea y no era ese proyecto.

Estoy usando JAVA peor en Netbeans, como lo puedo importar?