2. Atributos Estáticos
• Los atributos de clase static son compartidas por todos los objetos de la
clase; se declaran de igual manera que otra variable, añadiendo como
prefijo la palabra reservada static; por ejemplo:
public class Conjunto {
public static int contador= 0;
public Conjunto (){
this.contador++;
}
}
• Los atributos miembro static no forman parte de los objetos de la clase sino
de la propia clase
• Los atributos estáticos deben llevar un modificador de acceso que permita
su uso desde el exterior de la misma, este puede ser public, protected o
ninguno.
?
5. Métodos Estáticos
• La llamada a los métodos static se realiza mediante la clase:
NombreClase.metodo(), respetando las reglas de visibilidad; aunque
también se pueden llamar con un objeto de la clase, no es recomendable
debido a que son métodos dependientes de la clase y no de los objetos.
• Muchos métodos de la biblioteca Java se definen como static; por
ejemplo, los métodos matemáticos de la clase Math: Math.sin(),
Math.sqrt().
?
6. • Es un mecanismo para compartir atributos y métodos entre
clases.
• Permite definir una clase hija (derivada , subclase) a partir de una
clase padre (base, superclase).
• Las subclases heredan los atributos y métodos de las superclases.
• Permite la reutilización de código.
• Relación “es un”
Superclase
Subclase
?
Herencia
12. Clases Abstractas
• Su objetivo es especificar una estructura común para todas sus
subclases.
• El uso de clases abstractas puede simplificar el modelamiento de las
clases que participan en la misma relación con otras clases.
• Deja sin definir una o más operaciones (sólo declara sus prototipos – no
tienen implementación), que se definirán en subclases. Estas
operaciones se denominan métodos abstractos.
?
15. Interfaz
• Especifica lo que una clase debe hacer pero no como lo hace.
• No puede ser instanciadas
• Cualquier cantidad de clases puede implementar una interfaz
• Una clase puede implementar cualquier número de interfaces
todos los métodos
de una interfaz son públicos y
abstractos,
?
16. Variable Interfaz
public interface Caja {
Caja insertar (Object elemento);
}
public class CajaRegalo implements Caja {
public Caja insertar(Object e) {...}
}
public class CajaJuguete implements Caja{
public Caja insertar(Object e) {... }
}
Caja q;
q = new CajaRegalo();
q.insertar("Reloj");
...
q = new CajaJuguete();
q.insertar("Pelota");
17. Overriding: El “Method Overriding” permite implementar un mismo
método de una superclase, en una subclase. La clase hija puede extender
o redefinir (override) el comportamiento de la clase padre.
Overriding
?
18. • Overloading: En una clase se puede definir dos o más métodos con el
mismo nombre, pero que reciben diferentes parámetros (cantidad y/o
tipo). Estos métodos son overloading (sobrecargar).
• Ej:
• public void getCab( );
• public void getCab(String Name);
• public void getCab(int numberOfPassengers);
Overloading
19. Conceptos varios
• Object: es la superclase base de todas las clases de Java; toda clase
definida en Java hereda de la clase Object. Una variable tipo Object
puede referenciar a cualquier otro tipo de dato
20. • La clase Object tiene dos métodos importantes: equals() y toString().
Generalmente, se redefinen (overriding) en las clases para
especializarlos.
equals(): Compara el objeto que hace la llamada con el objeto que
se pasa como argumento, devuelve true si son iguales.
toString(): Retorna una cadena que es la representación del
objeto
Conceptos varios
25. Pero…
Sin embargo, luego se nos informa que se necesita almacenar más
información acerca del artículo, y que de hecho sería conveniente
implementar más TDAs que representen a distintos artículos. Por ejemplo:
TDA DiscoDuro
TDA Computadora
TDA Joya
26. TDA Genérico
• Este nuevo TDA permitirá representar cualquier tipo de dato,
sea un entero, un real, u otro TDA
• La idea es lograr “almacenar” cualquier tipo de dato dentro
de una variable de tipo Genérico
• Debe ser posible tanto consultar como modificar
27. TDA Genérico en JAVA
En JAVA existen dos formas de implementar:
1. Utilizando la clase Object
2. Mediante un tipo parametrizado
30. Se plantean problemas reales de complejidad mediana para que los estudiantes,
diseñen e implementen la mejor solución posible en términos de eficiencia
computacional, con un estilo de codificación adecuado, en base a tipos de datos
abstractos comúnmente empleados en las ciencias computacionales.
32. 2. Instalar Sonar Scanner
• (Ver pdf) Descargar, Instalar, Definir como Variable de entorno
Sonarqube
33. 3. Setear sonar-project.properties en carpeta de proyecto
• Cambiar NOMBRE_PROYECTO (Ver archivo ejemplo - NO seguir pdf)
# Required metadata
sonar.projectKey=my:project
sonar.projectName= NOMBRE_PROYECTO
sonar.projectVersion=1.0
# Path to the parent source code directory.
# Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=src
# Encoding of the source code
sonar.sourceEncoding=UTF-8
# Additional parameters
sonar.my.property=value
sonar.java.binaries=.
Sonarqube
34. 4. Ejecutar el comando sonar-scanner en carpeta del proyecto
• Abrir el cmd
• Ir a la carpeta del proyecto (con el comando: cd direccionCarpeta)
• Ejecutar el comando sonar-scanner
5. Revisar resultados en el servidor (http://localhost:9000)
Sonarqube