Você está na página 1de 21

UNIDAD 0

ESTANDARES DE
CODIFICACIN

POR QU?

Las convenciones de cdigo son importantes para


los programadores por un gran nmero de razones:

El 80% del coste del cdigo de un programa va a su mantenimiento.

Casi ningn software lo mantiene toda su vida el auto original.

Las convenciones de cdigo mejoran la lectura del software,


permitiendo entendercdigo nuevo mucho ms rapidamente y ms a
fondo.

Si distribuyes tu cdigo fuente como un producto, necesitas


asegurarte de que esta bien hecho y presentado como cualquier
otro producto.

Para que funcionen las convenciones, cada persona que


escribe software debe seguir la convencin. Todos.

INTERFACES

Qu son?

Coleccin de mtodos y propiedades abstractas, en las cuales se indica


que se debe hacer, pero sin llegar a utilizarlos.
En otras palabras, La interfaz define mtodos , pero solo su nombre y
parmetros , no su implementacin.
Contrato que una clase (la que implementa la interfaz) se compromete a
cumplir
Seguro para los clientes, que saben qu comportamiento se
encontrarn en las clases que implementan la interfaz
Puede incluir constantes.
En java desde la versin 8, ya se permiten implementacin de mtodos
por defecto

Para qu sirven?

Organizar la programacin.
Obligar a que ciertas clases utilicen los mismos
mtodos (nombres y parmetros).
Establecer relaciones entre clases que no estn
relacionadas.

ORGANIZACIN DE UN
PROYECTO

POR QU?

La organizacin de un proyecto es importante por


varias razones:

El 80% del coste del cdigo de un programa va a su mantenimiento.

Casi ningn software lo mantiene toda su vida el auto original.

Un proyecto de software esta compuesto muchos paquetes lgicos


que agrupan un conjunto de responsabilidades.

Si distribuyes tu cdigo fuente como un producto, necesitas


asegurarte de que esta bien hecho, organizado y presentado como
cualquier otro producto.

Por esto es una practica bsica aplicar modularidad a


nuestro proyecto para dar soporte a la separacin de
intereses.

Arquitectura de Software

Es el conjunto de decisiones significativas sobre la


organizacin de un sistema de software, la
seleccin de los elementos estructurales y sus
interfaces, con los que se compone el sistema.
Existen buenas practicas con respecto a la
arquitectura lgica de un sistema de software, las
cuales han sido escritas en forma de patrones. Uno
de ellos es el patrn Capas (Layer)

Patrn de arquitectura: Capas

Trata de separar la estructura lgica de un sistema


en capas separadas, donde cada capa tiene
responsabilidades distintas y a la vez relacionadas.
La colaboracin y acoplamiento es desde las capas
ms altas a las ms bajas, evitando el
acoplamiento de las capas bajas a las ms altas.
Define un modelo general de N-niveles.
El objetivo y el nmero de capas vara de una
aplicacin a otra y entre dominios de aplicacin.

Colecciones en Java

Qu son?

Permite almacenar y organizar objetos de manera til para


un acceso eficiente.
Se encuentran en el paquete java.util
Ncleo de abstracciones de colecciones de utilidad
(interfaces) e implementaciones ampliamente tiles.
Las interfaces proporcionan mtodos para todas las
operaciones comunes y las implementaciones concretas
especifican la decisin de las operaciones no permitidas.

(java.lang.UnsupportedOperationException)

Sobre los elementos se puede iterar (Iterator)

Colecciones
devuelve

Iterator

devuelve

Collection

Map

devuelve

ListIterator

List

Set

AbstractCollection
AbstractList

TreeMap

AbstractMap

HashMap

AbstractSet
HashSet

ArrayList

SortedSet

SortedMap

AbstractSequentialList

TreeSet
Queue

extends
implements
interface
class

LinkedList

Genricos en Java

Introduccin

Java permite definir clases con variables o


parmetros que representan tipos => Clases
genricas
Esto es posible, cuando el tipo de un dato no
afecta al tratamiento que se le va a dar a ese dato.
Un mecanismo similar est disponible en lenguajes
como C#, C++ o Ada.
Antes se simulaba el genrico utilizando Object

Motivacin (1/2)
Supongamos que en un programa
necesitamos una clase ParEnteros:
public class ParEnteros {
private int a, b;
public ParEnteros(int a, int b){
this.a = a;
this.b = b;
}
public ParEnteros swap (){
return new ParEnteros(b, a);
}
}

Motivacin (2/2)

Pero tambin necesitamos un clase


ParCaracteres con los mismos mtodos
que la anterior.
La implementacin de los mtodos es la
misma, porque no depende del tipo del
dato manipulado => abstraemos el tipo
convirtindolo
en
un
parmetro
genrico T.

Clase Par Genrica


public class Par<T> {
private T a, b;
public Par(T a, T b){
this.a = a;
this.b = b;
}
public Par<T> swap (){
return new Par<T>(b, a);
}
}

Prueba clase Par genrica


public class Prueba {
public static void main(String[] args) {
// Instanciacin de la clase genrica para Integer
// No se puede usar int porque no es una clase
Par<Integer> p = new Par<Integer>(1,2);
// Instanciacin de la clase genrica para Character
Par<Character> p1 = new Par<Character>('a','b');
p = p.swap();
p1 = p1.swap();
}
}

Restringiendo el parmetro
genrico

Supongamos que deseamos aadir a la clase


Par un mtodo max():
public T max(){
return ((a>b) ? a : b);
}

Si aadimos este mtodo sin ms, obtendremos un


error de compilacin, ya que a y b no tienen por qu
ser de un tipo comparable con >.
20

Restringiendo el parmetro
genrico

Debemos decirle al compilador que el tipo T slo


representar tipos de valores comparables con el
> o una funcin equivalente (compareTo).
public class Par<T extends Comparable<T>> {
private T a, b;
public Par(T a, T b){
this.a = a;
this.b = b;
}
public T max(){
return ((a.compareTo(b)>0) ? a : b);
}
..................

21

Você também pode gostar