Ver Mensaje Individual
  #11 (permalink)  
Antiguo 05/10/2007, 22:32
jorgelujanm
 
Fecha de Ingreso: abril-2005
Ubicación: Ramos Mejía
Mensajes: 113
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Argumentos opcionales

Cita:
Iniciado por GreenEyed Ver Mensaje
No entiendo a que te refieres con lo de las Interfaces.

Las interfaces son contratos con operaciones que las clases que implementan dichas interfaces deben cumplir. Son uno de los mecanismos que mejor garantizan los principios básicos de la programación orientada a objetos: El polimorfismo.

"Una interfaz múltiples métodos"

También, las Interfaces, son un mecanismo que permite garantizar el principio de Liskov; este principio del diseño dice que "Toda Generalización debe poder ser reemplazada por sus especializaciones" o "Toda superclase debe poder ser reemplazada por por sus sub-clases".

En cuanto a la diferencia entre x.nombre y x.getNombre() te paso a explicar una enorme diferencia: La construcción de árboles de objetos con raíz.

no es lo mismo colocar:
Empresa.Administracion.Deudas.Informes.imprimir()
Que:
Empresa.getAdministracion().getDeudar().getInforme s().imprimir();
Es decir,... que la notación en forma de getters y setters es más clara cuando se tiene que mantener la diferencia entre un objeto rama y un método de un objeto de esa rama.

Supongo, sin ofender, que no tenés mucha experiencia en ramas de objetos. Pero eso no es requisito para ser buen programador ni mucho menos. Sólo digo que en Java se debe implementar lo mismo de una forma diferente.

Básicamente, todo proyecto responde a dos conjuntos de requerimientos:

Funcionales: Necesidades puntuales y específicas tales cómo "alta de clientes, modificaciones, etc".

No funcionales: Esas son las peores: "Trazabilidad, velocidad, seguridad, persistencia, estabilidad, modularidad, extensibilidad, etc."

En el caso de los Requerimientos no funcionales, no importa qué tan bueno programador seas si no sabés diseño de sistemas y me refiero no a sistemas informáticos o software necesariamente. Y para garantizar esas cosas como la extensibilidad o la solidez se necesitan implementar mecanismos que van mucho más allá de los lenguajes. Por eso te recomiendo ver cosas como Liskov, Patrones de diseño y Abierto/Cerrado.

Mi paso por java (espero quedarme a vivir) apunta a utilizarlo en virtud de esos requerimientos que son los más importantes y por eso cuestiono las herramientas y mecanismos de java.

Disculpá lo extenso y seguiré aprendiendo Java que creo es uno de los pocos lenguajes que tienen los mecanismos necesarios para crear un buen sistema.